// 仓库数据的ts约束类型
import type { userInfo } from './interface';
// 引入小仓库方法
import { defineStore } from 'pinia';
// 在localStorage添加/设置持久化的token
import { getToken, removeToken, setToken } from '../utils/token-utils';

// 引入真实接口
import { reqLogin } from '@/api/login/login';


// 分别暴露获取用户相关的仓库
export const useUserInfoStore = defineStore('userInfo', {
    // 用户仓库的响应式数据
    state: (): userInfo => ({
        token: getToken() as string,
        name: '',
        nickName: '',
        userId: 0,
    }),

    // 用户仓库的方法
    actions: {
        // 1.登录
        async login(phone: string, password: string) {
            // 调用登录请求函数
            const result: any = await reqLogin({ phone, password });
            // 本地储存持久化token
            setToken(result.token);
            // pinia仓库储存token
            this.token = result.token;
            // 储存用户name
            this.name = result.name;
            // 储存用户nickName
            this.nickName = result.nickName;
            // 储存用户id
            this.userId = result.userId;
        },
        // 2.退出登录
        reset() {
            // 删除token
            removeToken()
            // 重置所有用户信息
            this.token = '';
            this.name = '';
            this.nickName = '';
            this.userId = 0;
        }
    },
});